/*
 * @Author: 梁青春
 * @Date: 2025-11-04 14:50:10
 * @LastEditTime: 2025-11-04 15:04:38
 * @LastEditors: 梁青春
 */
// 模拟接口：医嘱设置模块（规则设置 / 执行时间）
// 说明：真实环境中应由后端提供API，这里仅用于页面联调与演示

// ------------------------------
// 内部内存数据（模拟数据库）
// ------------------------------

// 规则设置（图一）
let _ruleSettings = {
  // 是否开启“住院补开医嘱”功能
  supplementEnabled: false,
  // 药品医嘱执行策略：verify（核对后可执行）| after_dispense（发药后可执行）
  executeStrategy: 'verify'
}

// 执行时间（图二）
// 频率代码与默认执行时间字符串
let _execTimes = [
  { freq: 'qd', remark: '每天一次', timesText: '每天 08:00' },
  { freq: 'bid', remark: '每天两次', timesText: '每天 08:00,12:00' },
  { freq: 'tid', remark: '每天三次', timesText: '每天 08:00,12:00,16:00' },
  { freq: 'qid', remark: '每天四次', timesText: '每天 08:00,12:00,16:00,21:00' },
  { freq: 'qod', remark: '隔日一次', timesText: '隔日 08:00' },
  { freq: 'qw', remark: '每周一次', timesText: '每周一 08:00' },
  { freq: 'biw', remark: '每周两次', timesText: '每周一 08:00,每周四 08:00' },
  { freq: 'hs', remark: '临睡前', timesText: '每天 21:00' },
  { freq: 'qn', remark: '每晚一次', timesText: '每天 21:00' },
  { freq: 'st', remark: '立即执行', timesText: '立即执行' },
  { freq: 'qnd', remark: '每n天一次', timesText: '每n天 08:00' },
  { freq: 'qnw', remark: '每n周一次', timesText: '每n周 周一 08:00' },
  {
    freq: 'nid',
    remark: '每天n次',
    timesText: '从第08:00开始到22:00结束，按次数均分时间段'
  },
  // 中药相关频率（图二底部）
  { freq: '1日1次', remark: '中药', timesText: '每天 08:00' },
  { freq: '1日2次', remark: '中药', timesText: '每天 08:00,12:00' },
  { freq: '1日3次', remark: '中药', timesText: '每天 08:00,12:00,16:00' },
  { freq: '1日4次', remark: '中药', timesText: '每天 08:00,12:00,16:00,21:00' }
]

// ------------------------------
// 模拟接口定义
// ------------------------------
export const mockMedicalOrderApi = {
  // 读取规则设置（图一）
  getRuleSettings() {
    return { code: 200, data: { ..._ruleSettings } }
  },

  // 保存规则设置（图一）
  saveRuleSettings(payload) {
    // 简单校验：执行策略必须为允许的值
    const allowed = ['verify', 'after_dispense']
    if (!allowed.includes(payload.executeStrategy)) {
      return { code: 400, message: '无效的执行策略' }
    }
    _ruleSettings = { ..._ruleSettings, ...payload }
    return { code: 200, message: '保存成功', data: { ..._ruleSettings } }
  },

  // 读取执行时间（图二）
  getExecTimes() {
    return { code: 200, data: { list: _execTimes.slice(), total: _execTimes.length } }
  }
}

export default mockMedicalOrderApi
